作者:mobiledu2502904893 | 来源:互联网 | 2024-12-16 20:03
Python | 如何处理脚本输入
原文链接: https://www.geeksforgeeks.org/python-accepting-script-input/
Python 常被用来替代 shell 脚本,用于自动执行诸如文件操作、系统配置等常规系统任务。本文将介绍如何通过重定向、管道或直接从文件读取等方式接受脚本输入。
需求:使脚本能够以最简便的方式接收用户的输入。这应涵盖通过命令行管道输出到脚本、将文件重定向到脚本,或是直接在命令行上传递文件名或文件名列表。
Python 的内置模块 fileinput 为实现这一目标提供了简洁的方法。以下是一个简单的示例,展示了如何使用该模块:
示例代码 1:
import fileinput
with fileinput.input() as f_input:
for line in f_input:
print(line, end='')
上述脚本能够处理所有提及的输入方式。如果将此脚本保存并设为可执行,那么可以通过以下命令获得预期的输出:
示例代码 2:
# 将目录列表输出到标准输出
$ ls | ./filein.py
# 读取/etc/passwd 并输出到标准输出
$ ./filein.py /etc/passwd
# 从标准输入读取/etc/passwd 并输出到标准输出
$ ./filein.py
fileinput.input() 函数创建并返回一个 FileInput 类的实例。此类实例不仅包含一些便捷的方法,还可以作为上下文管理器使用。因此,如果希望编写一个脚本来同时打印多个文件的内容,并在输出中包含文件名和行号,可以参考以下代码:
示例代码 3:
import fileinput
with fileinput.input('/etc/passwd') as f:
for line in f:
print(f.filename(), f.lineno(), line, end='')
/etc/passwd 1
/etc/passwd 2
/etc/passwd 3
<其他输出已省略>
使用 fileinput 作为上下文管理器可以确保在使用完毕后正确关闭文件,并能利用其提供的便捷方法来增强输出信息,例如添加文件名和行号等详细信息。